package br.edu.ufcg.lsd.wbis.ui.client.services;

import java.util.List;

import br.edu.ufcg.lsd.wbis.ui.client.beans.EquipInfo;
import br.edu.ufcg.lsd.wbis.ui.client.beans.UserInfo;
import br.edu.ufcg.lsd.wbis.ui.client.beans.UserMatcher;

import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * @author Renato Miceli
 */
public interface UserServiceAsync {

	public void registerUser(String login, String password, UserInfo newInfo, AsyncCallback<UserInfo> callback);
	
	public void removeUser(String login, String password, String userLogin, AsyncCallback<?> callback);
	
	public void updatePersonalInfo(String login, String password, UserInfo newInfo, AsyncCallback<UserInfo> callback);

	public void changePassword(String login, String password, UserInfo newInfo, AsyncCallback<UserInfo> callback);

	public void getUserInfo(String login, String password, String userLogin, AsyncCallback<UserInfo> callback);

	public void getRandomUserInfos(String login, String password, int number, AsyncCallback<List<UserInfo>> callback);

	public void getRandomUnauthorizedUserInfos(UserInfo requester, AsyncCallback<List<UserInfo>> callback);

	public void authorizeUser(String login, String password, String loginToAuthorize, AsyncCallback<?> callback);

	public void getUsersNames(String login, String password, AsyncCallback<List<String>> callback);

	public void getAllUserInfos(String login, String password, AsyncCallback<List<UserInfo>> callback);

	public void searchUsers(UserInfo requester, UserMatcher matcher, AsyncCallback<List<UserInfo>> callback);

	public void getAllEquipmentInfos(String requesterLogin, String requesterPassword, AsyncCallback<List<EquipInfo>> callback);

}
